package com.goulin.sprmvc.advice;

import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.ModelAndView;
/**
 * @ControllerAdvice 演示
 * @author goulin
 *
 */
@ControllerAdvice //标注此注解表示这是一个“统一设置”的类（建言）
public class ExceptionHandlerAdvice {
	@ExceptionHandler(value=Exception.class) //统一设置－任何类抛出exception异常，就会到这里，转入错误页面，可以设置多个
	public ModelAndView exception(Exception exception , WebRequest reqeust){
		ModelAndView modelAndView = new ModelAndView("error"); //设置错误页面modelandview
		modelAndView.addObject("errorMessage",exception.getMessage()); //写入错误信息，可以在页面上显示出来
		return modelAndView;
	}
	
	@ModelAttribute//向全局的@ModelAttribute参数设置属性值，可以在全局范围使用
	public void addAttributes(Model model){
		model.addAttribute("msg", "额外信息");
	}
	@InitBinder//绑定请求的数据
	public void initBinder(WebDataBinder webDataBinder){
//		webDataBinder.setDisallowedFields("id");//忽略request中的id参数
	}
	
	
}
